"""服务类基类"""
from config.error_message import MESSAGE
import time
import math


class BaseClass(object):
    @classmethod
    def message(cls, data=None, num=1, code=0, index=None, size=None, sort=None, other_message=None):
        """
        规范化回调函数方法
        :param data: api回调数据
        :param num: 数据数量，处理分页
        :param code: 见config/error_message
        :param index: 页数
        :param size: 条数
        :param sort: 排序
        :param other_message: 额外覆写的回调信息
        :return: 规范的json数据
        """
        message = MESSAGE[code]
        if code == 0:
            if isinstance(data, list):
                r = {
                    'code': 0,
                    'data': {
                        'content': data
                    }
                }
                if index is not None:
                    r['data'].update({
                        'number': 0,
                        'numberOfElements': len(data),
                        'first': True if index == 0 else False,
                        'last': True if size is None else True if num < (index + 1) * size else False,
                        'size': size,
                        'sort': sort,
                        'totalElement': num,
                        'totalPages': 1 if size is None else math.ceil(num / size),
                        'timestamp': int(time.time())
                    })
            else:
                r = {
                    'data': {} if data is None else data,
                    'code': code
                }
            if other_message:
                r.update({'message': other_message})
        else:
            r = {
                'data': {} if data is None else data,
                'code': code,
                'message': message
            }
        return r
